package code.whmmm.util.http.entity;

import code.whmmm.util.http.RequestHandler;
import code.whmmm.util.http.ResponseHandler;
import code.whmmm.util.http.impl.DefaultHandler;
import lombok.Data;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * <p><b>
 * 默认的 http 请求信息
 * </b></p>
 * <br/>
 *
 * @author Zero
 * @date 2019/8/1 8:34
 */
@Data
public class HttpReq<T> {


    /**
     * get | post | GET | POST
     */
    protected String httpMethod = "GET";
    /**
     * 请求 url
     */
    protected String url = "";

    /**
     * 请求头 信息
     */
    protected Map<String, String> header = new LinkedHashMap<String, String>();

    /**
     * 请求处理
     */
    protected RequestHandler reqHandler =
            DefaultHandler.DEFAULT_JSON_REQ_HANDLER;

    /**
     * 响应处理
     */
    protected ResponseHandler<T>
            respHandler = null;

    /**
     * 是否忽略 ssl 证书,默认不忽略 ，为 false
     * <p>有些ssl 证书会报错,这时要设置 ignoreSsl = true</p>
     */
    protected boolean ignoreSsl = false;
    /**
     * 请求参数
     */
    protected Map<String, Object> param = new HashMap<String, Object>();

    /**
     * 内容类型，只有 非 get 请求会用到<br/>
     * <b>默认是  application/json;charset=utf-8 ,请注意修改!!</b>
     * <br/>
     * 详情参考: {@link HttpContent#FORM_CONTENT_TYPE},{@link HttpContent#JSON_CONTENT_TYPE}
     */
    protected String contentType = "application/json;charset=utf-8";


    /**
     * <b>请求头:</b><br/>
     * <b>"k:v" 例如 "Host: www.baidu.com"</b><br/>
     * <b>注意 ':' 冒号必须是 英文 冒号!</b>
     *
     * @param k 请求头信息 key
     */
    public void addHeader(String k, String v) {
        if (k != null && !"".equals(k)) {
            header.put(k, v);
        }
    }


}
